﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Devart.Data.PostgreSql;
using System.Data;

namespace Sistema_financiero.Entidades
{
    public class Escritura
    {
        public int ID { get; set; }
        public Int64 Numero { get; set; }
        public Int64 Folio { get; set; }
        public string Tomo { get; set; }
        public DateTime Fecha { get; set; }
        public string Departamento { get; set; }

        public static void Guardar_escritura(Escritura escritura, string id_cliente)
        {
            int id_escritura;
            using (PgSqlConnection conexion = new PgSqlConnection(frm_Menu.conexion))
            {
                conexion.Unicode = true;
                conexion.Open();
                string sql = String.Format("INSERT INTO \"Escritura\" (\"numero\", \"folio\", \"tomo\", \"fecha\", \"departamento\") VALUES ({0}, {1}, '{2}', '{3}', '{4}')", escritura.Numero, escritura.Folio, escritura.Tomo, (escritura.Fecha.ToString("d")), escritura.Departamento);
                PgSqlCommand comando = new PgSqlCommand(sql, conexion);
                PgSqlDataReader reader = comando.ExecuteReader();
                reader.Read();
                id_escritura = Obtener_id_escritura(escritura);
                string sql2 = String.Format("INSERT INTO \"Escritura_Cliente\" (\"id_cliente\", \"id_escritura\") VALUES ({0}, {1})", id_cliente, id_escritura);
                PgSqlCommand comando2 = new PgSqlCommand(sql2, conexion);
                PgSqlDataReader reader2 = comando2.ExecuteReader();
                reader2.Read();

                conexion.Close();


            }
        }

        public static int Obtener_id_escritura(Escritura escritura_)
        {
            int id;
            id = 0;
            List<Escritura> lista = new List<Escritura>();
            using (PgSqlConnection conexion = new PgSqlConnection(frm_Menu.conexion))
            {

                conexion.Unicode = true;
                conexion.Open();
                string sql = String.Format("SELECT * FROM obtener_id_escritura({0},{1},'{2}','{3}','{4}')", escritura_.Numero, escritura_.Folio, escritura_.Tomo, (escritura_.Fecha.ToString("d")), escritura_.Departamento);
                PgSqlCommand comando = new PgSqlCommand(sql, conexion);
                PgSqlDataReader reader = comando.ExecuteReader();
                while (reader.Read())
                {
                    lista.Add(Cargar_Escritura(reader));
                }
                conexion.Close();

            }
            foreach (Escritura I in lista)
            {
                id = I.ID;
            }
            return id;

        }

        private static Escritura Cargar_Escritura(IDataReader reader)
        {
            Escritura item = new Escritura();
            item.ID = Convert.ToInt32(reader[0]);
            item.Numero = Convert.ToInt64(reader[1]);
            item.Folio = Convert.ToInt64(reader[2]);
            item.Tomo = Convert.ToString(reader[3]);
            item.Fecha = Convert.ToDateTime(reader[4]);
            item.Departamento = Convert.ToString(reader[5]);
            return item;
        }
    }
}
